<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.定义涵数有几种方式 
            //   表达式，声明式

        /*   function add(a,b){
              return a+b;
          }
          var add=function(a,b){
              return a+b;
          } */

        // 2.return关键字的作用
        /*  1.返回值到函数调用的地方
        2.停止执行函数
 */
        // 3.函数实参数和形参个数不等时会发生什么?举例说明
        /* 1.实参大于形参
        多余的参数会丢失
        2.实参小于形参
        多余的形参不会被赋值,为 undefined,undefined 进行任何运算都是NaN */

        // 4.var 和 function 关键字有什么特别功能?
        /*  var 变量提升
        function 函数提升
 */
        // 5.请定义一个函数，该函数功能为，传入一个值，返回这个值的单方值;请再写出一个函数，能为:传入二个值，分别是x和y，返回x的y次方结果
        /*  function root(num){
             return num*num
         }
         function tri(x,y){
             return x ** y;
         } */

        // 6..请写出一个函数，功能为:传入2个值,则返回其中的最大值;请再写一个函数，传入3个值，返回其中的最大值
        /*  2个 */
        /*  
       function max2(a, b) {
            return (a = a > b ? a : b);
        }
        console.log(max2(1, 1));
     */

        /* 3个 */
        /* 
        function max3(a, b, c) {
            var max = a > b ? a : b;
            return max > c ? max : c;
        } 
        */

        //7..请定义一个涵数，输入一个N 值，则出该值的阶乘，即:`n!-1*2*3*4*5*6*...*N`
      /*   function jc(n) {
            var result = 1;
            for (var i = 1; i <= n; i++) {
                result *= i;
            }
            return result;
        } */

        //8.以下代码的 console，log 打印的是什么？并解释原因。写出分析过程 
        /*     console.log(a);
          var a = 1;
          console.log(a);
          function a() {
            console.log(2);
          }
          console.log(a);
          var a = 3;
          console.log(a);
          function a() {
            console.log(4);
          }
          console.log(a);
          a();  */

        /* //   结果：
      function a(){
          console.log(2);
      } 
      function a(){
          console.log(4);
      }
      var a;
      console.log(a);//f(){log(4)}
      a=1;
      console.log(a);//1

      console.log(a);//1
      a=3;
      console.log(a);//3
      console.log(a);//3
      a();//a不是一个函数
 */

   //9.喇叭花数和水仙花数类似的一个三位数，其每一位数字的阶乘之和恰好等于它本身。abc = a! + b! + c!。尝试找出每一个喇叭花数。
    /*  // 计算一个数字的阶乘
function factorial(n) {
    // 声明一个累乘器
    var result = 1;
    for (var i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}

// 利用穷举法，从100~999中寻找喇叭花数
for (var i = 100; i <= 999; i++) {
    // 先将数字i转换为字符串用于进行拆分
    var i_str = i.toString();

    // abc 分别表示百位、十位、个位
    var a = Number(i_str.charAt(0));
    var b = Number(i_str.charAt(1));
    var c = Number(i_str.charAt(2));

    // 根据喇叭花数的条件，判断当前数是否为喇叭花数
    if (factorial(a) + factorial(b) + factorial(c) == i) {
        console.log(i);		// 145
    }
} */

  
    </script>
</body>

</html>